//窗口-弹出层-事件管理中心
function NW05_tcc_sj(fq) {
    this.fq = fq;//nw
    this.nw = fq.nw;
    this.hc = fq.hc;//缓存。
    this.tcc_sj = '/^tcc_sj\s*[0-9a-z_]+$/i'
}

function NW05_tcc_sj_gt(sfz, gt) {
    this.sfz = sfz;
    this.gt = gt;
}

// 注册事件 与缓存
NW05_tcc_sj.prototype.bc = function (gt) {
    this.hc.push(new NW05_tcc_sj_gt(gt.zdcRQ.Jiedian, gt));//缓存
}

/**
 * 执行事件
 * @param {对象} jd 弹出层原始节点
 * @param {文本} ajlb_dh  事件代号
 * @param {真|假} sdzx  是否手动关闭（用户自己代码，调用此函数）。如果是手动关闭，是不会触发用户函数
 * @returns 
 */
NW05_tcc_sj.prototype.zxSJ = function (jd, ajlb_dh, sdzx) {
    let gt;
    let cs;
    for (let i = 0; i < this.hc.length; i++) {
        if (this.hc[i].sfz == jd) {
            gt = this.hc[i].gt;
            cs = gt.cs;
            if (!sdzx && cs.sj) {//非手动触发（系统调用），与 参数里面配置了 用户事件

                if (/^tcc_sj\s*[0-9a-z_]+$/i.test(ajlb_dh)) {
                    ajlb_dh = NWHS_sck(ajlb_dh.substring(6));
                    if (/^[0-9.]+/.test(ajlb_dh)) {
                        ajlb_dh = Number(ajlb_dh);
                    }
                }
                // console.log('-------事件代号------------' + ajlb_dh)
                if (!cs.sj(gt, ajlb_dh)) {
                    //执行用户方法，得到一个 false，表示阻止事件执行
                    return;
                }

            }
            switch (ajlb_dh) {//按键类别 触发事件的 按键类别
                case 'tcc_gb':
                    gt._zt_bg = 0;//记录关闭状态
                    this.hc.splice(i, 1);//从数组删除    
                    // console.log(this.nw.yq.zdy.sj.hc.length)
                    this.nw.yq.zdy.sj.sc(gt.nrcRQ.Jiedian);
                    // console.log(this.nw.yq.zdy.sj.hc.length)
                    gt.zdcRQ.jd.sc();//节点上也删除
                    return;
                case 'tcc_zhd':
                    gt.zdh();
                    return;
                //隐藏    
                case 'tcc_yc':
                    gt.xs(0);
                    return;
                case 'tcc_yc_tb':
                    gt.xsTB(0);
                    return;
                case 'tcc_yc_jb':
                    gt.xsJB(0);
                    return;
                //显示
                case 'tcc_xs':
                    gt.xs(1);
                    return;
                case 'tcc_xs_tb':
                    gt.xsTB(1);
                    return;
                case 'tcc_xs_jb':
                    gt.xsJB(1);
                    return;
                //显示或隐藏。自动取反
                case 'tcc_xs_yc':
                    gt.xs();
                    return;
                case 'tcc_xs_yc_tb':
                    gt.xsTB();
                    return;
                case 'tcc_xs_yc_jb':
                    gt.xsJB();
                    return;
                //针对 ajax 与隔离 ifarme的重装加载
                case 'tcc_gx':
                    gt.gx()
                    return;
            }
        }
    }
}


// ======================↓↓↓=========================
// 创建单击事件
NW05_tcc_sj.prototype.zcSJ = function (RQ) {

    let sx = RQ.getAttributeNode('ajlb');
    if (sx && NW05_tcc_sj_pdAJLB(sx.value)) {

        RQ.onclick = NW05_tcc_sj_danji;
        // console.log(RQ)
        // console.log(RQ.onclick)
        // console.log('\n')
    }
    let _ErziM = RQ.children;//取得容器所有的子节点
    if (!_ErziM) {
        return;
    }
    for (let i = 0; i < _ErziM.length; i++) {
        if (_ErziM[i].nodeName == 'IFRAME' || _ErziM[i].nodeName == 'NR') {
            continue;
        }
        this.zcSJ(_ErziM[i]);
    }
}

function NW05_tcc_sj_danji(e) {// 单击事件
    if (this.nodeName != 'AJ' && e.target != this) {
        return;
    }
    //按键所在的弹出层
    let jd = NWHS_hqJD_tgSXzhi(this, 'rq', 'tcc');
    //按键的类别。
    let ajlb = this.getAttributeNode('ajlb');
    if (ajlb && (ajlb = NWHS_sck(ajlb.value))) {
        nw.ck.tcc.sj.zxSJ(jd, ajlb);
    }

    // if (ajlb && NW05_tcc_sj_pdAJLB(ajlb.value)) {
    //     ajlb = ajlb.value.replace(/\s+/g, "");//除所有空格
    //     ajlb = ajlb.toLowerCase();
    //     nw.ck.tcc.sj.zxSJ(jd, ajlb);
    // }
}

// ======================↑↑↑=========================
function NW05_tcc_sj_pdAJLB(ajlb) {
    if (ajlb && (ajlb = NWHS_sck(ajlb))) {
        if (/^tcc_sj\s*[0-9a-z_]+$/i.test(ajlb)) {
            return ajlb
        }
        ajlb = ajlb.toLowerCase();
        switch (ajlb) {
            //关闭
            case 'tcc_gb':
            //最大化
            case 'tcc_zhd':
            //隐藏
            case 'tcc_yc':
            case 'tcc_yc_tb':
            case 'tcc_yc_jb':
            //显示
            case 'tcc_xs':
            case 'tcc_xs_tb':
            case 'tcc_xs_jb':
            //显示或隐藏。自动取反
            case 'tcc_xs_yc':
            case 'tcc_xs_yc_tb':
            case 'tcc_xs_yc_jb':
            //针对 ajax 与隔离 ifarme的重装加载
            case 'tcc_gx':
                return ajlb;
            default: return null;
        }
    }
    return null;
}


